package com.weixue.utils;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Day19
 *  分页功能
 *      1.在前端页面的执行是渲染数据和分页信息展示，
 *      2.在后端页面则需要按照前端传输而来的请求，将分页所需的数据正确地查询出来并返回给前端
 *
 *  分页功能实现
 *      1.分页功能的最终实现就是通过页码和条数，确定数据库需要查询的数据
 *      2.为了前端分页区的展示，还要将数据总量或者总页数返回给前端。数据总量是必不可少的，而总页数可以计算出来（即数据总量除以每页条数）
 *
 *  分页查询参数--PageQueryUtil在数据库查询操作中需要使用
 *            --PageQueryUtil在控制层使用用来封装请求参数数据
 */
public class PageQueryUtil extends LinkedHashMap<String, Object> {
    //当前页码
    private int page;
    //每页条数
    private int limit;

    public PageQueryUtil(Map<String, Object> params) {
        //putAll()方法用于将给定Map中存在的所有映射复制到此Hashtable中
        this.putAll(params);

        //分页参数  Integer.parseInt(xxx)     xxx为字符串    转变后为int类型
        this.page = Integer.parseInt(params.get("page").toString());
        this.limit = Integer.parseInt(params.get("limit").toString());
        this.put("start", (page - 1) * limit);
        this.put("page", page);
        this.put("limit", limit);
    }


    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }

    @Override
    public String toString() {
        return "PageUtil{" +
                "page=" + page +
                ", limit=" + limit +
                '}';
    }
}
